Contemporary computing devices are often required to operate multiple programs and processes concurrently. Concurrent operation requires code protection and can be limited by the available physical memory of a computing device. The introduction of techniques that use virtual memory has removed this limitation. The term “virtual memory,” also called virtual storage or logical memory, refers to the abstraction of separating virtual storage, which is seen by the processes of a program, from the physical memory, which is the real memory as seen by a central processing unit (CPU) of a computing device. The separation is managed typically by the operating system and the memory management unit of one or more processors. The separation also offers the convenience to an application programmer that they only need to be aware of the virtual storage space.
A process is an instance or invocation of a program and two or more processes can run the same program at the same time. For example, a calculator program can be opened twice, resulting in two instances of the same calculator program. One of the concerns of multiple processes operating concurrently is the protection of the process code and data, so that the activity of one process doesn't overwrite the code or data of another process. Various techniques of virtual storage offer protection and isolation of program processes running concurrently.
The addressing limits of virtual storage are governed by the system architecture of a computing device and the virtual storage memory can be many times larger than the actual physical memory of the system. Each process can operate as if it has access to the full range of virtual storage. This can produce the illusion to an executing program that the system has significantly more storage than it physically has. Virtual storage addresses are translated to physical or real storage location addresses through the use of tables that map blocks of contiguous virtual storage space to real memory space in central storage or to auxiliary storage typically in a direct access storage device (DASD) of a computing system. The tables used to map virtual storage are also referred to as dynamic address translation (DAT) tables, as they are used to translate a virtual address to a physical address during a CPU access of the virtual address. Portions of an executing program that are currently being accessed by a CPU need to be loaded into real memory or central storage memory, such as random access memory (RAM).
When one or more system CPUs require program process instructions or data to continue execution of a program task, and the instructions or data are not found in central storage memory or the information to translate the virtual address to a physical address is not complete in the DAT tables, a situation referred to as a memory access exception or fault occurs. Such occurrences typically require intervention by the operating system of the computing device to resolve the fault before processing of the program task can continue. Resolving the fault can involve locating the required program instructions or data in auxiliary memory and loading a copy into central storage memory, and includes updating DAT tables that are used to map the virtual address of the program instructions or data to the real memory address location where the program instructions or data have been loaded. The fault resolution and updating of translation tables consumes system time and results in a loss of computing device performance. Expediting fault resolution and translation table updates will minimize the impact to system performance.